
#ifndef _APP_GSM_H_
#define _APP_GSM_H_


/*********************************************************************************************************
**                                          MACRO DEF
*********************************************************************************************************/
#define     GSM_ROUTINE_AT_TIME_CONST       (30)

#define		MAX_GSM_RELINK_FAIL_COUNT		(6)
#define		MAX_GSM_UNLINK_FAIL_COUNT		(6)

/*********************************************************************************************************
**                                          ENUM&STRUCT
*********************************************************************************************************/

typedef enum
{
	GSM_START = 0,
	GSM_INIT ,
	GSM_RELINK,
	GSM_ROUTINE,
	GSM_UNLINK,
	GSM_SLEEP,
}GsmModuleStateEnum;

typedef struct
{
    U8      eStatusPre,eStatusNext;
	U8		relink_fail_cnt;
	U8		unlink_fail_cnt;

	BOOL  	gsm_init_ok; 
    BOOL    sms_init_ok;
    BOOL    relink_ok;
    BOOL    unlink_ok;  
    BOOL    gpsmd_open_ok;
    BOOL    gpsmd_close_ok;
    BOOL    sms_read_ok;
    BOOL    routine_at_ok;
}GsmStatusStruct;
/*********************************************************************************************************
**                                          GLOBAL VAR
*********************************************************************************************************/

/*********************************************************************************************************
**                                          LOCAL VAR
*********************************************************************************************************/

/*********************************************************************************************************
**                                          FUNCTIONS
*********************************************************************************************************/
BOOL  	gsm_isGsmInitOk(void); 
BOOL	gsm_isSmsInitOk(void);
BOOL	gsm_isRelinkOk(void);
BOOL    gsm_isUnlinkOk(void);
BOOL	gsm_isGpsMdOpenOk(void);
BOOL    gsm_isGpsMdCloseOk(void);
BOOL    gsm_isSmsReadOk(void);

void	gsm_clearRelinkFlag(void);
void	gsm_clearGpsMdOpenFlag(void);
void    gsm_clearGpsMdCloseFlag(void);
void    gsm_clearSmsReadFlag(void);

U8		gsm_getModuleState(void);

extern void gsm_gsmInitCallBack(BOOL result);
extern void gsm_smsInitCallBack(BOOL result);
extern void gsm_reLinkCallBack(BOOL result);
extern void gsm_unLinkCallBack(BOOL result);
extern void gsm_smsReadCallBack(U8 *msg, U16 len);
extern void gsm_gpsMdOpenCallBack(BOOL result);
extern void gsm_gpsMdCloseCallBack(BOOL result);
extern void gsm_routineAtCallBack(BOOL result);

extern void	Gsm_ModuleHandle(void);
#endif
/*********************************************************************************************************
End Of File
*********************************************************************************************************/



